// base.h
// Created by fyniny on 12/23/18.
//
#include "fsys.h"
#ifndef SPOOLING_BASE_H
#define SPOOLING_BASE_H
namespace base {
    class base_ {
    private:
        PCB m_pcb;
        int m_out_put_count = 0; // 输出次数统计
        int m_max_output;        // 程序输出阈值
    protected:
        void output(int count);
    public:
        base_(int max_output,PCB* pcb = nullptr);
        // 返回进程状态
        int getProcessStatus() const;
        // 返回进程id
        int getProcessID() const ;
        //  判断是否结束
        bool isDied() const;
    public:
        // 修改程序状态
        void setProcessStatus(int status);
        // 进程运行的主要函数
        virtual void run(void* dispath) = 0;
        // 请求函数,输出进程通过调用此函数向假脱机发出输出请求
        virtual int request(ReqBlock& req,Buffer& buffer);
        virtual ~base_();
    };
}
typedef base::base_ Base;
#endif //SPOOLING_BASE_H
